The present invention relates to the field of software design and maintenance. More specifically, the present invention relates to finding an impact of a change in a parameter of a software system by implementing a spreading activation technique.
In the software industry, large-scale software systems are used in various business-critical processes. Typically, such software systems have a long shelf life and require maintenance over time to incorporate required modifications or functionality upgrades to them.
Modifications made in a software system include changes in its design, software code specifications, implementing the software system, maintaining the performance of the software system, ensuring the operation of the software system in different environments and its evolution, and the like. Hence, it is necessary to identify the effect of such modifications on the software system. Based on the identified effect on the software system, a software developer or expert can estimate the associated cost and effort.
Impact analysis is a technique, which helps in finding the effect of modifications made in a set of program instructions in a software system. Impact analysis also helps to determine the schedules, effort and cost estimates entailed in the complete life cycle of the software system.
Various techniques are available for conducting impact analysis. Examples of such techniques include, but are not limited to, program-slicing techniques and transitive closure on call graphs. Program-slicing techniques such as static program slicing techniques and dynamic program slicing are used for software maintenance and debugging.
Static program-slicing techniques use a collection of program instructions in the code of the software system, to detect their effect on the given variables, or the effect of the given variables on a collection of program instructions in the code of the software system. The accuracy of such static program-slicing techniques to identify relevant variables depends on the accuracy in the identification of the collection of statements and the given variables. This makes such slicing techniques computationally expensive.
Dynamic program-slicing technique detects the effect of the implementation of a collection of program instructions in the software code of a system on the given variables, or that of the given variables on a collection of program instructions in the software code. The detection for dynamic program-slicing technique is based on execution path traces. These execution path traces are the program execution paths that correspond to the different inputs. Sometimes, especially in the case of complex systems, these inputs are not available. Hence, different test cases need to be developed for such complex systems, which make the dynamic program-slicing techniques not only computationally expensive.
The techniques mentioned above may have a possible impact on a software system due to a change in the code of the software system. However, these techniques do not quantify the impact of these changes. Typically, the application of these techniques on object-oriented systems is complex due to the number of dependencies between the parts of the software systems. Further, the techniques mentioned above fail to identify the relationships between the various parts of the software system, to calculate the impact effectively.
In light of the foregoing, there is a need for a method for effectively finding the impact of a change on a software system. Further, such a method should be able to identify inter-relationships between various parts of the software system.